﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Data.SqlClient;
using Model.Miembro;
using System.Data;
using System.Configuration;
namespace DataBase.Miembro
{
    
    public class BDMiembro
    {                                          //ALVARO-PC
        static string conexion = "Data Source=JCIDatabase.db.10200093.hostedresource.com; Initial Catalog=JCIDatabase; User ID=JCIDatabase; Password='ucbJCI2012!'";
        
        public static ICollection DevolverTodosActivos()
        {
            
            try
            {
                SqlConnection canal = new SqlConnection(conexion);
                SqlDataAdapter comando = new SqlDataAdapter();
                comando.SelectCommand = new SqlCommand("Select * From [Miembro] where Estado=@si", canal);
                comando.SelectCommand.Parameters.AddWithValue("si", "si");
                canal.Open();

                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("CI", typeof(long)));
                dt.Columns.Add(new DataColumn("Nombre", typeof(String)));
                dt.Columns.Add(new DataColumn("ApellidoPaterno", typeof(String)));
                dt.Columns.Add(new DataColumn("ApellidoMaterno", typeof(String)));
                dt.Columns.Add(new DataColumn("Cargo", typeof(String)));
                dt.Columns.Add(new DataColumn("Estado", typeof(String)));


                comando.Fill(dt);
                dt.Columns.Add(new DataColumn("vara", typeof(bool)));
                foreach (DataRow item in dt.Rows)
                {
                    if (item["Estado"].ToString() == "si")
                    {
                        item["vara"] = true;
                    }
                    else
                    {
                        item["vara"] = false;
                    }
                }
                DataView dv = new DataView(dt);
                return dv;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static ICollection DevolverTodosInactivos()
        {
            try
            {
                SqlConnection canal = new SqlConnection(conexion);
                SqlDataAdapter comando = new SqlDataAdapter();
                comando.SelectCommand = new SqlCommand("Select * From [Miembro] where Estado=@si", canal);
                comando.SelectCommand.Parameters.AddWithValue("si", "no");
                canal.Open();

                DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("CI", typeof(long)));
                dt.Columns.Add(new DataColumn("Nombre", typeof(String)));
                dt.Columns.Add(new DataColumn("ApellidoPaterno", typeof(String)));
                dt.Columns.Add(new DataColumn("ApellidoMaterno", typeof(String)));
                dt.Columns.Add(new DataColumn("Cargo", typeof(String)));
                dt.Columns.Add(new DataColumn("Estado", typeof(String)));


                comando.Fill(dt);
                dt.Columns.Add(new DataColumn("vara", typeof(bool)));
                foreach (DataRow item in dt.Rows)
                {
                    if (item["Estado"].ToString() == "si")
                    {
                        item["vara"] = true;
                    }
                    else
                    {
                        item["vara"] = false;
                    }
                }
                DataView dv = new DataView(dt);
                return dv;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static ClaseMiembro BuscarMiembroUser(string res)
        {
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(conexion);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT CI,Nombre,ApellidoPaterno,ApellidoMaterno,Cargo,Estado,Password,FechaNacimiento,Correo,Celular,Telefono FROM [Miembro] WHERE Miembro.NombreUsuario=@auxx ";
                cmd.Parameters.AddWithValue("@auxx", res);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                ClaseMiembro nuevoo = new ClaseMiembro();
                if (reader.Read())
                {
                    nuevoo.carnet = Convert.ToInt64(reader["CI"]);
                    nuevoo.nombre = reader["Nombre"].ToString();
                    nuevoo.apePaterno = reader["ApellidoPaterno"].ToString();
                    nuevoo.apeMaterno = reader["ApellidoMaterno"].ToString();
                    nuevoo.cargo = reader["Cargo"].ToString();
                    nuevoo.stado = reader["Estado"].ToString();
                    nuevoo.password = reader["Password"].ToString();
                    nuevoo.fechaNacimiemto = Convert.ToDateTime(reader["FechaNacimiento"]);
                    nuevoo.correo = reader["Correo"].ToString();
                    nuevoo.celular = reader["Celular"].ToString();
                    nuevoo.telefono = reader["Telefono"].ToString();
                }
                //aaaaaaaaaaaaaaaa
                reader.Close();
                return nuevoo;
            }
            catch (SqlException ex)
            {
                throw new Exception("Error buscar miembro BD", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlConnection.ClearAllPools();
            }
        }
       
        public static bool ActulizarDatosMiembro(Model.Miembro.ClaseMiembro aux)
        {
            try
            {

                SqlConnection canal = new SqlConnection(conexion);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "Update [Miembro] Set CI=@ci,Nombre=@nom,ApellidoPaterno=@pat,Telefono=@tel,Celular=@cel,ApellidoMaterno=@mat,Correo=@corr,FechaNacimiento=@fech Where CI=@ges";
                comando.Parameters.AddWithValue("ci", aux.carnet);
                comando.Parameters.AddWithValue("nom", aux.nombre);
                comando.Parameters.AddWithValue("pat",aux.apePaterno);
                comando.Parameters.AddWithValue("tel", aux.telefono);
                comando.Parameters.AddWithValue("cel", aux.celular);
                comando.Parameters.AddWithValue("mat", aux.apeMaterno);
                comando.Parameters.AddWithValue("corr",aux.correo );
                comando.Parameters.AddWithValue("fech", aux.fechaNacimiemto );
                comando.Parameters.AddWithValue("ges", aux.carnet);

                canal.Open();
                comando.ExecuteNonQuery();
                return true;

            }
            catch (Exception ex)
            {
                return false;
                throw ex;
            }
        }
        public static bool registrarMiembro(ClaseMiembro miem)
        {
        
            bool res = false;
            
            try
            {
                

                SqlConnection canal = new SqlConnection(conexion);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "Insert Into [Miembro](CI,Nombre,ApellidoPaterno,Telefono,FechaNacimiento,Correo,Celular,Cargo,NombreUsuario,Password,ApellidoMaterno,Estado,NivelPermiso) Values (@ci,@nom,@pater,@telf,@fecNa,@corr,@cel,@cargoo,@nomuser,@passs,@materno,@estad,@niperr)";
                comando.Parameters.AddWithValue("ci",miem.carnet);
                comando.Parameters.AddWithValue("nom", miem.nombre);
                comando.Parameters.AddWithValue("pater", miem.apePaterno);
                comando.Parameters.AddWithValue("telf", miem.telefono);
                comando.Parameters.AddWithValue("fecNa", miem.fechaNacimiemto);
                comando.Parameters.AddWithValue("corr", miem.correo);
                comando.Parameters.AddWithValue("cel", miem.celular);
                comando.Parameters.AddWithValue("cargoo", miem.cargo);
                comando.Parameters.AddWithValue("nomuser", miem.nombreUsuario);
                comando.Parameters.AddWithValue("passs", miem.password);
                comando.Parameters.AddWithValue("materno", miem.apeMaterno);
                comando.Parameters.AddWithValue("estad", "si");
                comando.Parameters.AddWithValue("niperr", "1");
                
                canal.Open();
                comando.ExecuteNonQuery();
                return true;
            }
            catch (SqlException)
            {
                return res;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        
            return true;
        }
        public static bool ActualizarContrasena(Int64 carnet, string est)
        {

            try
            {

                SqlConnection canal = new SqlConnection(conexion);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "Update [Miembro] Set Password=@nue Where CI=@ges";
                comando.Parameters.AddWithValue("nue", est);
                comando.Parameters.AddWithValue("ges", carnet);

                canal.Open();
                comando.ExecuteNonQuery();
                return true;
            }
            catch (Exception ex)
            {
                return false;
                throw ex;
            }

        }
        public static bool ActualizarEstado(Int64 carnet, string est)
        { 
            
            try
            {
                
                SqlConnection canal = new SqlConnection(conexion);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "Update [Miembro] Set Estado=@nue Where CI=@ges";
                comando.Parameters.AddWithValue("nue", est);
                comando.Parameters.AddWithValue("ges", carnet);
                
                canal.Open();
                comando.ExecuteNonQuery();
                return true;
            }
            catch (Exception ex)
            {
                return false;
                throw ex;
            }
        
        }
        public static bool ActualizarCargo(Int64 carnet,string aux)
        {
            
            try
            {
                
                SqlConnection canal = new SqlConnection(conexion);
                SqlCommand comando = canal.CreateCommand();
                comando.CommandText = "Update [Miembro] Set Cargo=@nue Where CI=@ges";
                comando.Parameters.AddWithValue("nue", aux);
                comando.Parameters.AddWithValue("ges", carnet);
                
                canal.Open();
                comando.ExecuteNonQuery();
                return true;
            }
            catch (Exception ex)
            {
                return false;
                throw ex;
            }
        }
        public static ClaseMiembro getMiembroExisteEstado(string nom,string cont)
        {
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(conexion);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT CI,Nombre,ApellidoPaterno,ApellidoMaterno,Password,NombreUsuario,Estado,Cargo FROM [Miembro] WHERE Password=@passs And NombreUsuario=@nomm";
                cmd.Parameters.AddWithValue("@nomm", nom);
                cmd.Parameters.AddWithValue("@passs",cont);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                ClaseMiembro nuevoo = new ClaseMiembro();
                if (reader.Read())
                {
                    nuevoo.carnet = Convert.ToInt64(reader["CI"]);
                    nuevoo.nombre = reader["Nombre"].ToString();
                    nuevoo.apePaterno = reader["ApellidoPaterno"].ToString();
                    nuevoo.apeMaterno = reader["ApellidoMaterno"].ToString();
                    nuevoo.password = reader["Password"].ToString();
                    nuevoo.nombreUsuario = reader["NombreUsuario"].ToString();
                    nuevoo.stado = reader["Estado"].ToString();
                    nuevoo.cargo = reader["Cargo"].ToString();

                }
                reader.Close();
                return nuevoo;
            }
            catch (SqlException ex)
            {
                throw new Exception("Error buscar miembro BD", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlConnection.ClearAllPools();
            }
        }
        public static ClaseMiembro BuscarMiembro(Int64 carnet)
        {
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(conexion);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT CI,Nombre,ApellidoPaterno,ApellidoMaterno,Cargo,Estado,Password,FechaNacimiento,Correo,Celular,Telefono FROM [Miembro] WHERE Miembro.CI=@auxx ";
                cmd.Parameters.AddWithValue("@auxx", carnet);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                ClaseMiembro nuevoo = new ClaseMiembro();
                if (reader.Read())
                {
                    nuevoo.carnet = Convert.ToInt64(reader["CI"]);
                    nuevoo.nombre = reader["Nombre"].ToString();
                    nuevoo.apePaterno = reader["ApellidoPaterno"].ToString();
                    nuevoo.apeMaterno = reader["ApellidoMaterno"].ToString();
                    nuevoo.cargo = reader["Cargo"].ToString();
                    nuevoo.stado = reader["Estado"].ToString();
                    nuevoo.password = reader["Password"].ToString();
                    nuevoo.fechaNacimiemto = Convert.ToDateTime( reader["FechaNacimiento"] );
                    nuevoo.correo = reader["Correo"].ToString();
                    nuevoo.celular = reader["Celular"].ToString();
                    nuevoo.telefono = reader["Telefono"].ToString();
                }
                //aaaaaaaaaaaaaaaa
                reader.Close();

                //conn = new SqlConnection(conexion);
               // SqlCommand cmd2 = conn.CreateCommand();
               // cmd2.CommandText = "SELECT CI,Nombre,ApellidoPaterno,ApellidoMaterno,Indice FROM [Miembro],[Pago],[PagoCuota] WHERE Miembro.CI=@auxx AND Miembro.CI=Pago.CIPago AND Pago.CodigoPago=PagoCuota.CodigoPago AND Indice>=All ( SELECT Indice FROM [Pago],[PagoCuota] WHERE Pago.CodigoPago=PagoCuota.CodigoPago)";
               // cmd2.Parameters.AddWithValue("@auxx", carnet);
               //// conn.Open();
               // SqlDataReader reader2 = cmd2.ExecuteReader();
                //if (!reader2.HasRows)
                //{
                //    return nuevoo;
                //}
                //if (reader2.Read())
                //{
                //    nuevoo.indice = Convert.ToInt64( reader2["Indice"]);
                //}
                return nuevoo ;
            }
            catch (SqlException ex)
            {
                throw new Exception("Error buscar miembro BD", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlConnection.ClearAllPools();
            }
        }

        public static List<ClaseMiembro> getMiembrosTotal()
        {
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(conexion);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT * FROM [Miembro] ";
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                if (!reader.HasRows)
                {
                    return null;
                }
                List<ClaseMiembro> lista = new List<ClaseMiembro>();
                //ClaseMiembro nuevoo = new ClaseMiembro();
                while (reader.Read())
                {
                    ClaseMiembro nuevoo = new ClaseMiembro();
                    nuevoo.carnet = Convert.ToInt64(reader["CI"]);
                    nuevoo.nombre = reader["Nombre"].ToString();
                    nuevoo.apePaterno = reader["ApellidoPaterno"].ToString();
                    nuevoo.apeMaterno = reader["ApellidoMaterno"].ToString();
                    string ress = ( reader["Estado"]).ToString();
                    if (ress=="si")
	                {
		                nuevoo.vara = true;
	                }
                    else
	                {
                        nuevoo.vara = false;
	                }
                    
                    lista.Add(nuevoo);
                }
                
                reader.Close();

                return lista;
            }
            catch (SqlException ex)
            {
                throw new Exception("Error getMiembros BD", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                SqlConnection.ClearAllPools();
            }
        }





    }
}
